The invention relates generally to data storage systems, and in particular, to data storage systems with remote data mirroring capability.
Given the importance of the availability of information, several approaches have been developed for providing enhanced reliability and availability of data stored in a mass storage system in the event of system malfunction or destruction. In one technique, data is periodically backed up and archived on magnetic tape. While such periodic backup provides critical protection, data updated or modified since the last backup will not be protected. In addition, for large mass storage systems, this process is very time consuming and costly. If a failure or malfunction should occur, the time required to transfer data from tape to another mass storage system may be quite lengthy.
Another technique is data mirroring. In a xe2x80x9cmirroredxe2x80x9d system, the data stored on one mass storage subsystem is replicated on one or more other mass storage subsystems. Thus, if one or more storage devices on one of the mass storage systems fails, the data is available in the form of a mirrored copy from the mirrored system. Consequently, if a catastrophic system failure, such as a malfunction or complete destruction, should occur, the data is readily available from the mirrored system. Systems arranged in a mirrored configuration may be situated in close proximity to one another, e.g., in the same building, or may be geographically distant, e.g., within the same campus.
In such mirrored, fault-tolerant environments, one of the systems is typically a master and services both read and write requests. As is known in the art, the master system may employ a cache to increase performance. Maintaining a low cache miss rate is crucial to obtaining good performance. Thus, in addition to caching, the system may employ some type of xe2x80x9cread aheadxe2x80x9d control or data prefetching to reduce cache miss rates. Data prefetch involves the staging, in the cache, of data before the data is referenced by the host. Any prefetch mechanism therefore requires address prediction, that is, predicting the address of data that will be referenced by the host, and control to ensure that the prefetch is timed so that the prefetched data is available (in cache) to the host when needed.
Various types of data prefetching techniques have been developed to boost cache performance, for example, spatial prefetch and temporal prefetch. Spatial prefetching is based on the likelihood that once data is referenced, nearby data is also likely to be referenced. In a spatial prefetch, the decision to prefetch is determined by the current cache access, e.g., fetching the cache block adjacent to the cache block currently being accessed. In temporally prefetching methods, prefetches are issued by examining the instructions ahead in the instruction stream, including past branches, and predicting the addresses that will be used by future instructions. Yet another type of prefetch is the history-based prefetch, which predicts memory access patterns based on past memory usage.
Individual systems in mirrored, fault tolerant configurations can also each use mirroring and dynamic mirror service policies to effectively improve system reliability and dynamically balance loading among storage devices as well as the intelligent controllers that control them. In contrast, prefetch burden allocation is either fixed or only slowly adjustable.
Unlike the master system, which executes both host-requested reads and writes, the other xe2x80x9cslavexe2x80x9d system, if it is connected to a host computer, can support host-requested reads only. Additionally, the slave system provides fault tolerant capability and thus, with respect to the master system, services mostly write requests for storing data copies. To ensure that the slave system""s cache is not underutilized, the master data storage system can enable the slave data storage system to prefetch chunks of data into the slave data storage system""s own cache during timed intervals, for subsequent use by the master storage system in support of host-requested reads, as described in U.S. Pat. No. 6,003,114, in the name of Eitan Bachmat. The bandwidth of the data link is therefore used during writes as required by data backup operations and only infrequently for reads to support data recovery operations or local cache misses.
This invention relates to a technique for performing a prefetch operation on data being maintained by a data storage system and a remote data storage system arranged in a mirrored configuration and interconnected by a data link.
In one aspect of the invention, a local prefetch operation directed to data on a local mirrored copy of the data storage system is initiated and a read command is sent to the remote data storage system over the data link. The read command causes the remote data storage system to provide other data prefetched from a remote mirrored copy of the remote data storage system to the data storage system over the data link.
Embodiments of the invention may include one or more of the following features.
The local prefetch operation can begin at a first address of a first track number in a range of consecutive prefetch addresses and the read command can be directed to a second address of a second track number in the range of consecutive track prefetch addresses.
The read command can cause the remote data storage system to initiate a remote prefetch operation directed to a corresponding remote mirrored copy on the corresponding remote data storage system.
The second track number can be offset from the first track number by a programmable track offset value.
The data storage system can include a cache memory for storing data and a cache directory for storing metadata, the metadata including a prefetch flag for indicating that data was retrieved by the local prefetch operation and a remote prefetch flag for indicating that data was retrieved by the remote prefetch operation.
The data retrieved by the local prefetch operation can be stored in the cache memory and the prefetch flag set to indicate that the data was retrieved by the local prefetch operation.
The requested, other data from the remote data storage system can be received over the data link, and, if it is determined that the other data is not stored in the cache memory, the other data can be stored in the cache memory and the remote prefetch flag can be set to indicate that the other data was retrieved by the remote prefetch operation. If it is determined that the other data is stored in the cache memory and was retrieved by the local prefetch operation, the programmable track offset value is increased by a programmable adjustment value. The other data received over the data link is discarded.
If it is determined that data has been requested already by the remote prefetch operation, and the remote prefetch flag is determined to be set, then a remote count is increased by one and compared to a predetermined threshold value. If the comparison indicates that the remote count equals the predetermined threshold value, then the programmable track offset value is decreased by the programmable adjustment value.
The programmable track offset value can be adjusted to compensate for a workload imbalance between the data storage system and the remote data storage system.
The present invention therefore provides a data storage system which reads from a remote backup data storage system as part of a predictive prefetch operation. This type of prefetch mechanism significantly improves controller read performance by allowing multiple parallel prefetch streams to serve one data request. It also provides for dynamic tuning of data streams and reduced loading of back-end interfaces by using xe2x80x9cfreexe2x80x9d data link bandwidth.